<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<title>Hesap Makinesi</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript"> 
// degisdkenlerin, fonksiyonlarda ilk harfleri kucuk bunu takip eden kelimelerin ilk harfleri buyuk
// class objede ilk harf buyuk
// paket isimleri tamami kucuk
// dosya isimlerinde tum harfler kucuk
// alt cizgi kesinlikle yok
// giriniler
// aciklamalar
$(document).ready(function(){
	    $(".flip").click(function(){
                 $(".panel").slideToggle("slow");
          });
		  });
</script>
<style type="text/css"> 
	input
	{
		background-image: url(pic/000.png);
		background-repeat: repeat-x;
		border-color:#000;
		border:medium;
	}
	div.panel,.sifir
	{
		width:100px; /*genişlik*/
		height:25px; /* yükseklik*/
	}
	div.panel,.rakam
	{
		width:40px; /*genişlik*/
		height:25px; /* yükseklik*/
	}
	div.panel,.tBox
	{
		width:240px; /*genişlik*/
		height:25px; /* yükseklik*/
	}
    div.panel,.flip
    {
		 align:center;
		 margin:0px;
		 padding:5px;
		 text-align:center;
		 background-color:#CCC;
		 border:solid 1px #c5c3c3;
    }
    div.panel
    {
      width:250px;
      height:225px;
      %%display:none;
    }
div.panel1 {		
		width:240px; /*genişlik*/
		height:25px; /* yükseklik*/
}
</style>
</head>
<body>
<center>
	<button class="flip">Hesap Makinesi</button>
	<br/>
	<div name="bolum" class="panel">
     <center>
	<form name='form1' action=''>
        <table width='254' height="220" border='0'>
	      <tr>
	        <td colspan='5'>
	          <input type='text' class="tBox" name='sonuc' id='sonuc' size=24 value="" tabindex='1' onKeyDown="return tusKontrol(event);" />
            </td>
	      </tr>
	      <tr>
	        <td>
            <input type='button' class="rakam" name='m_arti' id='m_arti' value='M+' onClick="hafizaIslemleri('+')"  /></td>
	        <td>
            <input type='button' class="rakam" name='m_eksi' id='m_eksi' value='M-' onClick="hafizaIslemleri('-')" tabindex='11' />
            </td>
	        <td>
            <input type='button' class="rakam" name='m_c' id='m_c' value='MC' onClick="hafizaIslemleri('c')" tabindex='12' />
            </td>
	        <td>
            <input type='button' class="rakam" name='m_r' id='m_r' value='MR' onClick="hafizaIslemleri('r')" tabindex='33' />
            </td>
	        <td>
            <input type='button' class="rakam" name='m_s' id='m_s' value='MS' onClick="hafizaIslemleri('s')" tabindex='33' />
            </td>
	      <tr>
	        <td>
            <input type='button' class="rakam" name='sil' id='shift' value='<--' tabindex='11' onClick='sonBasSil()'  />
            </td>
	        <td>
            <input type='button' class="rakam" name='c' id='c' value='C' onClick="temizle()" tabindex='11' />
            </td>
	        <td>
            <input type='button' class="rakam" name='ce' id='ce' value='CE' onClick="textiSifirla()" tabindex='12' />
            </td>
	        <td>
            <input type='button' class="rakam" name='isaret' id='isaret' value='+/-' onClick='toplamayaGoreTersi()' tabindex='33' /></td>
	        <td>
            <input type='button' class="rakam" name='kok' id='kok' value='½' onClick='karekokAl()' tabindex='33' />
            </td>
	      </tr>
	      <tr>
	        <td>
            <input type='button' class="rakam" name='7' id='7' value='7' onClick='yaz(7)' tabindex='22' />
            </td>
	        <td>
            <input type='button' class="rakam" name='8' id='8' value='8' onClick='yaz(8)' tabindex='23' />
            </td>
	        <td>
            <input type='button' class="rakam" name='9' id='9' value='9' onClick='yaz(9)' tabindex='24' />
            </td>
	        <td>
            <input type='button' class="rakam" name='bolum2' id='bolum' value='&#247' onClick="islem('/')" tabindex='7' />
            </td>
	        <td>
            <input type='button' class="rakam" name='yuzde' id='yuzde' value='%' onClick="islem('%')" tabindex='32' />
            </td>
          </tr>
	      <tr>
	        <td>
            <input type='button' class="rakam" name='4' id='4' value='4' onClick='yaz(4)' tabindex='19' />
            </td>
	        <td>
            <input type='button' class="rakam" name='5' id='5' value='5' onClick='yaz(5)' tabindex='20' />
            </td>
	        <td>
            <input type='button' class="rakam" name='6' id='6' value='6' onClick='yaz(6)' tabindex='21' />
            </td>
	        <td>
            <input type='button' class="rakam" name='carpim' id='carpim' value='x' onClick="islem('*')" tabindex='8' />
            </td>
	        <td>
            <input type='button' class="rakam" name='1/x' id='1/x' value='1/x' onClick="carpmayaGoreTersi()" tabindex='13' /></td>
          </tr>
	      <tr>
	        <td>
            <input type='button' class="rakam" name='1' id='1' value='1' onClick='yaz(1)' tabindex='16' />
            </td>
	        <td>
            <input type='button' class="rakam" name='2' id='2' value='2' onClick='yaz(2)' tabindex='17' />
            </td>
	        <td>
            <input type='button' class="rakam" name='3' id='3' value='3' onClick='yaz(3)' tabindex='18' />
            </td>
	        <td>
            <input type='button' class="rakam" name='eksi' id='eksi' value='-' onClick="islem('-')" tabindex='9' />
            </td>
	        <td rowspan='4'>
	         <input type='button' class="rakam" name='esittir' id='esittir' value='=' onClick="islem('=')" tabindex='25' />
	        </td>
          </tr>
	      <tr>
	        <td colspan='2'>
            <input type='button' class="sifir" name='0' id='0' value='0' onClick='yaz(0)' tabindex='17' />
            </td>
	        <td>
            <input type='button' class="rakam" name='virgul' id='virgul' value=',' onClick='ondalikliSayi()' tabindex='26' />
            </td>
	        <td>
            <input type='button' class="rakam" name='topla' id='topla' value='+' onClick="islem('+')" tabindex='10' />
            </td>
          </tr>
        </table>
	</form>
</center>
</div>
<input type='text' class="tBox" name='field2' id='field2'/>
</center> 
<script LANGUAGE='JavaScript'>
<!-- Begin
var klavye = document.form1;
klavye.sonuc.value=0;
var hafiza = 0; //işlem yapılırken tusa basıldıgı anda textboxtaki sayiyi tutan degişkendir
var girisKontrol = false;//textboxta sayi girişini kontrol eden degişkendir ondalıklı sayı yazdırma fonksiyonunda kullanılır
var beklenenIslem = "";// işlem fonksiyonumuzda girgimiz işlemi tutan değişkendir
var hafizadaTut=0;//makine üzerindeki memory tuslarının kullanımı ile sayiyi hafizaya almayi sağlar
var esittireBasilmadanEkleme=false;//eger sayi yazıp işleme bastıktan sonra direk eşittire basarsak sayiyi kendi ile işleme sokmayı saglamak için 
//olusturgumuz kontroldur
var islemTusunaBasildi=false;//islem tusuna basıldıgını kontrol eden degisken 
var hafizaOkundu=false;//MR tusuna basildigini tutan degisken
var hafizadaDegerVar=false;//M+,M- veya MS ile hafizaya deger girilip girilmedigini kontrol eder 
var sayiyiKontrolleAl=0;// ctrl+c ile textboxtaki sayiyi tutan degisken
var sayiTexti=",48,49,50,51,52,53,54,55,56,57,";
var sayiTexti2=",96,97,98,99,100,101,102,103,104,105,"
function tusKontrol(e)
{
	var str=","+e.keyCode+",";
	if(e.shiftKey==false&&e.ctrlKey==false) // eger shift yada kontrol tuslarina basili degilse klavyeden girilen sayilari ekranma yazdirir
	{
		if(sayiTexti.indexOf(str)!=-1)
				yaz(e.keyCode-48);
		if(sayiTexti2.indexOf(str)!=-1)
				yaz(e.keyCode-96);
		if(e.keyCode==106)                        // * tusuna basilirsa
			islem('*'); 
		if(e.keyCode==107)                        // + tusuna basilirsa
			islem('+');
		if(e.keyCode==109||e.keyCode==45)          //
			islem('-');
		if(e.keyCode==111)                         // / tusuna basilirsa
			islem('/');
		if(e.keyCode==110)                        // virgul tusuna basilirsa
			ondalikliSayi();
		if(e.keyCode==8)                          // backspace tusuna basilirsa
			sonBasSil();
		if(e.keyCode==46)                         // delete  tusuna basilirsa
			textiSifirla();
		if(e.keyCode==13)                         // enter  tusuna basilirsa
			islem('=');
	}
	if(e.shiftKey==true)
	{
		if(e.keyCode==52)             // shift+4 tusu yani + tusu
			islem('+');
    	if(e.keyCode==53)             //shiift+5 yani % tusu
			islem('%');
		if(e.keyCode==55)             //shift+7 yani bolme tusu
			islem('/');
	}
	if(e.ctrlKey==true)                  // ctrl basili ise
	{
		if(e.keyCode==67)                //ctrl+c textboxtaki sayiyi sayiyiKontrolleAl degiskenine atar.
			sayiyiKontrolleAl=document.getElementById('sonuc').value;
	    if(e.keyCode==86)                //ctrl+v  sayiyiKontrolleAl degerini textboxtaki degiskenine atar.
		{
			document.getElementById('sonuc').value=sayiyiKontrolleAl;
			girisKontrol =false;
			esittireBasilmadanEkleme=false;
		}
	}
	return false;
}
function yaz (deg)									//bu fonksiyonumuz textboxa sayi yazdirmamizi saglar giris kontrol sayi girildikten sonra
{                                                   //bir islem tusuna basilmissa ondan sonra girilen sayinin baska bir sayi olarak yeniden 
	if (girisKontrol)                               //yazilmasini saglar yani kullanici 4 + yapti ve sonra 9'a basti islem fonk
	{											    //girisKontrol true yapiliyo ve 9 tusuna basildiginda 4 temizlenip yerine 9 yaziliyo
		klavye.sonuc.value = deg;
		girisKontrol = false;
	}
	else 											//eger girisKontrol false  yani kullanici 4 sonra da 8 e basarsa bunların yanyana yazilmasi 
	{
		if (klavye.sonuc.value == "0")				//saglanir  bu satirdaki if kontrolu textboxta sifir sayisi varsa basilan tusun sifiri sildirip
		klavye.sonuc.value = deg;					//uzerine yazilmasini saglar
		else
		klavye.sonuc.value += deg;
	}
	esittireBasilmadanEkleme=false;                 // burda kullanici sayiyiyi islem ve = tusuna bastiginda sonuc alabilsin diye yapilmistir
}

function islem (Op)                                   
{
	var sonuc = klavye.sonuc.value;                  //Textboxtaki degeri sonuc ve yedekleme ile aldık ilk basta hafiza degeri sifir
	var yedekleme=klavye.sonuc.value;                //burdaki if ile sayi girisini kontrol ediyoruz 
	if ((!islemTusunaBasildi)&&(!hafizaOkundu)&&girisKontrol&& beklenenIslem != "=");
	else
	{
		if ( '+' == beklenenIslem )                  //eger sayi girisi var ise ilk cagrıldıgında degeri hafizaya atar 
			hafiza += parseFloat(sonuc);             //ikinci defa cagrildiginda ilk caagırdıgımızdaki bastigimiz islem tusu aktiflesir
		else if ( '-' == beklenenIslem )             //yani 4+ dedigimde once 4 hafizaya alinir sonra beklenen islem + yapılıp fonksiyondan cikilir
			hafiza -= parseFloat(sonuc);             //daha sonra(4+ dan sonra) 5 yazdigimizi varsayalim burda sonuc degeri 5 olur ve hafizadaki   
		else if ( '%' == beklenenIslem )             //deger 4 beklenen islemde + oldugu icin hafiza sonuc ile toplanip hafizaya atilir 
			hafiza =(hafiza/100)*parseFloat(sonuc);   
		else if ( '/' == beklenenIslem )             //daha sonra hafiza degeri textboxa yazdirilir 
			hafiza /= parseFloat(sonuc);
		else if ( '*' == beklenenIslem )
			hafiza *= parseFloat(sonuc);
		else
		{
			hafiza = parseFloat(sonuc);
		}
	    if(girisKontrol&&(!hafizaOkundu))             //burdaki satirlar kullanici ikinci bir sayi girmeden islem yaptirmasi icin yazilmistir
	    {                                             //mesela kullanıcı 4 + ya basti bundan sonra esittir tusuna basarsa  
			if ( '+' == beklenenIslem )               //sonuc degeri 4 oluyor ve sonuc kendisi ile beklenen islem(+)e aliniyor 
				sonuc = parseFloat(sonuc)*2;          //sonuc 8 oluyor   
			else if ( '-' == beklenenIslem )
				sonuc -= parseFloat(sonuc);
			else if ( '%' == beklenenIslem )          //    
		    	sonuc =(sonuc/100)*parseFloat(sonuc);  
			else if ( '/' == beklenenIslem )
				sonuc /= parseFloat(sonuc);
			else if ( '*' == beklenenIslem )
				sonuc *= parseFloat(sonuc);
			hafiza = parseFloat(sonuc);                //son satirda sonuc hafiza degerine atanir 
		}
		if(Op == "=")
		{
			esittireBasilmadanEkleme=false;           //burda eger kullanici 4+= yapmıssa esittire basilmadan ekleme bayragini false yapiyo			
		}
		klavye.sonuc.value=yedekleme;                 //klavyedeki ilk deger yerinde kalıyo cunku kullanici 4 + - * / islemlerine basarsa
		 									          //en son basilan islemi kaile almak icin yapilmistir
		if((esittireBasilmadanEkleme==false))
			klavye.sonuc.value=hafiza;                //4+= durumunda 8 olan sonuc degeri textboxa yazdiriliyor
		else
		
			hafiza=parseFloat(yedekleme);             //kullanici 4 +*/ ye basti ve hafizadaki deger kendi kendine islemlere girip degisti
													  //bunu engellemek icin yedekledigimiz(textboxtaki) degeri	hafizada tutuyoruz															
		beklenenIslem = Op;                           //op(islem operatoru) beklenen isleme atiliyo
		girisKontrol = true;
		islemTusunaBasildi=true;                      //kullanicinin islem tusuna bastigini gosteren bayrak true yapiliyo bu sayede
													  //kullanici 4 + - * girildigi durumda bizde kullanıcının islemi degistirdigini anlıyoruz
		esittireBasilmadanEkleme=true;                //yapılan islem bittigi icin 4+= yapsa bile artık esittireBasilmadanEkleme true olamak      
													  //durumunda cunku artık esittire bi daha basarsa sonuc aynı kalmalı 4+== yaparsa 8 olmak 	
	}												  //zorundadır
}
function sonBasSil()
{
	var val=document.getElementById("sonuc").value;
	klavye.sonuc.value = val.substring(0,val.length-1);
}
function hafizaIslemleri(Opr)                             //Makine uzerindeki M+,M-,MR,MS ve MC islemlerini yapan fonksiyondur
{
	if ( '+' == Opr )                                     //M+ textboxtaki degeri hafiza(memory)daki degere ekler bu deger ilk basta sifirdir
	{
		hafizadaTut+=parseFloat(klavye.sonuc.value);      
		hafizadaDegerVar=true;	                          //ayni zamanda hafizada deger oldugunu gosteren bayragi True yapar
	}
	else if ( '-' == Opr )                                //M- textboxtaki degeri hafiza(memory)daki degerden cikarir
	{
		hafizadaTut-=parseFloat(klavye.sonuc.value);	 
		hafizadaDegerVar=true;                            //ayni zamanda hafizada deger oldugunu gosteren bayragi True yapar
	}
	else if ( 'c' == Opr)                                 //MC hafizada tutulan degeri sifirlar ve
	{
			hafizadaTut=0;	                  
		    hafizadaDegerVar=false;                       //hafizada deger oldugunu gosteren bayragi False yapar
	}
	else if ( 'r' == Opr)                                 //MR eger okuma yapacaksak ve hafizada deger oldugunu gosteren bayrak True ise
	{
		if(hafizadaDegerVar==true)                           
		{
			klavye.sonuc.value=parseFloat(hafizadaTut);   //textboxa hafizada tutulan sayiyi yazdiriyoruz
			esittireBasilmadanEkleme=false;               //
			hafizaOkundu=true;                            //hafizanin okundugunu gosteren bayragi tru yapar cunku bunu islem fonksiyonunda 
		}                                                 //sayi girisi oldugunu anlatmak icin yapar 
	}
	else if ( 's' == Opr )
	{
		hafizadaTut=parseFloat(klavye.sonuc.value);
		hafizadaDegerVar=true;
	}
	girisKontrol = true;
	}
function ondalikliSayi ()                                  //kullacisi sayi girdi ve virgul tusuna basti  
{
	var cursonuc = klavye.sonuc.value;                     //virgule basilirsa 
	if (girisKontrol)                                      //sayi girisi yapilmamis ve direk virgule basilirsa 
	{                                                      //ondalık sayinin tam kismi sifir olacak sekilde yazdiriyor
	cursonuc = "0.";
	girisKontrol = false;
	}
	else                                                   
	{
	if (cursonuc.indexOf(".") == -1)                        //sayi girdikten sonra virgule basilirsa 
	cursonuc += ".";
	}
	klavye.sonuc.value = cursonuc;
}
function textiSifirla ()                                     //bu fonksiyon girilen sayinin sifirlanmasini saglar
{
	klavye.sonuc.value = "0";                                //
	girisKontrol = true;                                     //girilen sayi textboxı temizleyip yazilmasi icin 
	hafizaOkundu=false;										 //hafiza 
}
function temizle ()                                           //textiSifirladan farkli olarak hafizada                                             
{                                                             //bulunan degeri sırada bulunan islemi 
	hafiza = 0;
	beklenenIslem = "";
	esittireBasilmadanEkleme=false;
	islemTusunaBasildi=false;
	textiSifirla();
}
function toplamayaGoreTersi ()                               //textboxtaki sayinin toplamaya gore tersini aliyor
{
	klavye.sonuc.value = parseFloat(klavye.sonuc.value) * -1; 
}
function karekokAl()                                         //textboxtaki sayinin karekokunu aliyor
{
	klavye.sonuc.value = Math.sqrt(parseFloat(klavye.sonuc.value));
	girisKontrol = true;
	hafizaOkundu=true;                                        //kullanici 11 + kok 81 yapmak istedi bu durum da 11 degerinin islem metdunda
}                                                             //hafiza degiskeninde kalmasini saglar.
function carpmayaGoreTersi()
{
	klavye.sonuc.value=1/parseFloat(klavye.sonuc.value);
	girisKontrol = true;                 
	hafizaOkundu=true;                                        //kullanici 11 + 1 bollu50 yapmak istedi bu durum da 11 degerinin islem metdunda
}// End -->                                                   //hafiza degiskeninde kalmasini saglar.
</script>
</body>
</html>

